with way_today as (
  select
    id
    ,waybill_no
    ,waybill_status_code
    ,goods_type_id
    ,goods_type_code
    ,goods_type_name
    ,goods_name
    --,package_number
    ,cast(package_length AS DECIMAL(14,2)) as package_length
    ,cast(package_wide AS DECIMAL(14,2)) as  package_wide
    ,cast(package_high AS DECIMAL(14,2)) as  package_high
    ,cast(package_volume AS DECIMAL(14,2)) as  package_volume
    ,cast(package_total_volume AS DECIMAL(14,2)) as  package_total_volume
    ,cast(package_charge_weight AS DECIMAL(14,2)) as  package_charge_weight
    --,box_standard_id
    --,box_standard_code
    --,box_standard_name
    --,box_number
    --,cast(box_price AS DECIMAL(14,2)) as  box_price
    ,collect_staff_code
    --,collect_staff_name
    ,collect_time
    ,dispatch_staff_code
    ,dispatch_staff_name
    ,dispatch_time
    --,dispatch_network_id
    ,dispatch_network_code
    ,dispatch_network_name
    ,exception_code
    --,exception_reason
    ,terminal_dispatch_code
    ,nullif(split(terminal_dispatch_code, ',')[0], '') AS first_code
    ,nullif(split(terminal_dispatch_code, ',')[1], '') AS second_code
    ,nullif(split(terminal_dispatch_code, ',')[2], '') AS third_code
    --,accurate
    ,is_sign
    --,sign_network_id
    ,sign_network_code
    ,sign_network_name
    --,sign_finance_id
    ,sign_finance_code
    --,sign_finance_name
    ,sign_time
    --,is_real_name
    --,id_no
    ,is_abnormal
    --,abnormal_reg_network_id
    ,abnormal_reg_network_code
    --,abnormal_reg_network_name
    ,abnormal_reg_time
    --,abnormal_reg_staff_code
    --,abnormal_reg_staff_name
    --,order_id
    ,customer_order_id
    ,waybill_source_code
    ,waybill_source_name
    --,send_code
    --,send_name
    --,dispatch_code
    --,dispatch_name
    ,is_void
    ,is_refund
    --,is_need_receipt
    --,receipt_no
    --,is_settlement
    --,settlement_time
    ,customer_code
    ,customer_name
    ,sender_name
    --,sender_mobile_phone
    --,sender_telphone
    --,sender_country_id
    --,sender_country_name
    ,sender_province_id
    --,sender_province_name
    ,sender_city_id
    --,sender_city_name
    ,sender_area_id
    --,sender_area_name
    ,sender_township
    ,sender_street
    ,sender_detailed_address
    --,sender_postal_code
    --,sender_email
    --,sign_sms_notify
    --,sender_sms_notify
    ,origin_id
    --,origin_code
    --,origin_name
    --,pick_network_id
    ,pick_network_code
    ,pick_network_name
    ,cast(freight AS DECIMAL(14,2)) as  freight
    --,cast(package_cost AS DECIMAL(14,2)) as  package_cost
    --,cast(after_tax_freight AS DECIMAL(14,2)) as  after_tax_freight
    ,cast(total_freight AS DECIMAL(14,2)) as  total_freight
    --,cast(tax AS DECIMAL(14,2)) as  tax
    --,cast(handicraft_fee AS DECIMAL(14,2)) as  handicraft_fee
    --,cast(other_fee AS DECIMAL(14,2)) as  other_fee
    --,cast(receive_pay_fee AS DECIMAL(14,2)) as  receive_pay_fee
    --,pick_finance_id
    ,pick_finance_code
    --,pick_finance_name
    --,dispatch_finance_id
    ,dispatch_finance_code
    --,dispatch_finance_name
    --,express_type_id
    --,insured
    --,cast(insured_amount AS DECIMAL(14,2)) as  insured_amount
    --,cast(insured_fee AS DECIMAL(14,2)) as  insured_fee
    --,cod_need
    --,cast(cod_money AS DECIMAL(14,2)) as  cod_money
    --,cast(cod_fee AS DECIMAL(14,2)) as  cod_fee
    --,settlement_id
    --,settlement_code
    --,settlement_name
    --,paid_mode_id
    --,paid_mode_code
    --,paid_mode_name
    ,receiver_name
    --,receiver_company
    --,receiver_mobile_phone
    --,receiver_telphone
    --,receiver_country_id
    --,receiver_country_name
    ,receiver_province_id
    --,receiver_province_name
    ,receiver_city_id
    --,receiver_city_name
    ,receiver_area_id
    --,receiver_area_name
    ,receiver_township
    ,receiver_street
    ,receiver_detailed_address
    --,receiver_postal_code
    --,receiver_email
    ,destination_id
    --,destination_code
    --,destination_name
    ,receiver_sorting_code
    ,input_time
    --,delivery_time
    --,input_staff_code
    --,input_staff_name
    --,input_network_id
    ,input_network_code
    --,input_network_name
    --,coupon_code
    --,cast(coupon_amount AS DECIMAL(14,2)) as  coupon_amount
    --,remarks
    --,prints_number
    --,invoice_no
    --,is_paper
    --,bill_no
    --,is_cash
    --,is_cod_receive
    --,currency_code
    --,currency_name
    --,goods_url
    ,cast(settlement_weight AS DECIMAL(14,2)) as  settlement_weight
    --,customer_id
    ,order_source_code
    ,last_update_time
    --,last_update_network_id
    --,last_update_network_code
    --,last_update_network_name
    --,last_update_staff_code
    --,last_update_staff_name
    --,last_update_time_sync
    ,is_delete
    --,is_plaintext
    --,refund_time
    --,input_staff_by
    --,smart_device_data_update_time
    --,real_name
    --,id_no_type
    --,sex
    --,distribute_finance_id
    --,distribute_finance_code
    --,distribute_finance_name
    --,print_staff_name
    --,trace_id
    --,inspection_method
    ,cast(package_collect_weight AS DECIMAL(14,2)) as  package_collect_weight
    ,cast(package_receipt_weight AS DECIMAL(14,2)) as  package_receipt_weight
    ,cast(package_arrival_weight AS DECIMAL(14,2)) as  package_arrival_weight
    ,cast(package_inside_charge_weight AS DECIMAL(14,2)) as  package_inside_charge_weight
    --,is_distribute_scan
    --,is_arrival_scan
    --,center_prints_number
    ,waybill_weight
    --,miss_flag
    ,is_business
    ,is_receive
    --,customer_network_id
    --,customer_network_code
    --,customer_network_name
    --,customer_type
    --,calculate_fee_desc
    --,calculate_fee_code
    --,printer_counterfoil
    --,quotetype_code
    --,receipt_fee
    --,cast(package_center_arrival_weight AS DECIMAL(14,2)) as  package_center_arrival_weight
    ,express_type_code
    ,express_type_name
    ,cast(package_total_weight AS DECIMAL(14,2)) as  package_total_weight
    ,dt
     FROM jms_ods.yl_oms_oms_waybill
       WHERE dt = '{{ execution_date | cst_ds }}'
         ),
way_history as (
            select
               id
               ,waybill_no
               ,waybill_status_code
               ,goods_type_id
               ,goods_type_code
               ,goods_type_name
               ,goods_name
               --,package_number
               ,package_length
               ,package_wide
               ,package_high
               ,package_volume
               ,package_total_volume
               ,package_charge_weight
               --,box_standard_id
               --,box_standard_code
               --,box_standard_name
               --,box_number
               --,box_price
               ,collect_staff_code
               --,collect_staff_name
               ,collect_time
               ,dispatch_staff_code
               ,dispatch_staff_name
               ,dispatch_time
               --,dispatch_network_id
               ,dispatch_network_code
               ,dispatch_network_name
               ,exception_code
               --,exception_reason
               ,terminal_dispatch_code
               ,first_code
               ,second_code
               ,third_code
               --,accurate
               ,is_sign
               --,sign_network_id
               ,sign_network_code
               ,sign_network_name
               --,sign_finance_id
               ,sign_finance_code
               --,sign_finance_name
               ,sign_time
               --,is_real_name
               --,id_no
               ,is_abnormal
               --,abnormal_reg_network_id
               ,abnormal_reg_network_code
               --,abnormal_reg_network_name
               ,abnormal_reg_time
               --,abnormal_reg_staff_code
               --,abnormal_reg_staff_name
               --,order_id
               ,customer_order_id
               ,waybill_source_code
               ,waybill_source_name
               --,send_code
               --,send_name
               --,dispatch_code
               --,dispatch_name
               ,is_void
               ,is_refund
               --,is_need_receipt
               --,receipt_no
               --,is_settlement
               --,settlement_time
               ,customer_code
               ,customer_name
               ,sender_name
               --,sender_mobile_phone
               --,sender_telphone
               --,sender_country_id
               --,sender_country_name
               ,sender_province_id
               --,sender_province_name
               ,sender_city_id
               --,sender_city_name
               ,sender_area_id
               --,sender_area_name
               ,sender_township
               ,sender_street
               ,sender_detailed_address
               --,sender_postal_code
               --,sender_email
               --,sign_sms_notify
               --,sender_sms_notify
               ,origin_id
               --,origin_code
               --,origin_name
               --,pick_network_id
               ,pick_network_code
               ,pick_network_name
               ,freight
               --,package_cost
               --,after_tax_freight
               ,total_freight
               --,tax
               --,handicraft_fee
               --,other_fee
               --,receive_pay_fee
               --,pick_finance_id
               ,pick_finance_code
               --,pick_finance_name
               --,dispatch_finance_id
               ,dispatch_finance_code
               --,dispatch_finance_name
               --,express_type_id
               --,insured
               --,insured_amount
               --,insured_fee
               --,cod_need
               --,cod_money
               --,cod_fee
               --,settlement_id
               --,settlement_code
               --,settlement_name
               --,paid_mode_id
               --,paid_mode_code
               --,paid_mode_name
               ,receiver_name
               --,receiver_company
               --,receiver_mobile_phone
               --,receiver_telphone
               --,receiver_country_id
               --,receiver_country_name
               ,receiver_province_id
               --,receiver_province_name
               ,receiver_city_id
               --,receiver_city_name
               ,receiver_area_id
               --,receiver_area_name
               ,receiver_township
               ,receiver_street
               ,receiver_detailed_address
               --,receiver_postal_code
               --,receiver_email
               ,destination_id
               --,destination_code
               --,destination_name
               ,receiver_sorting_code
               ,input_time
               --,delivery_time
               --,input_staff_code
               --,input_staff_name
               --,input_network_id
               ,input_network_code
               --,input_network_name
               --,coupon_code
               --,coupon_amount
               --,remarks
               --,prints_number
               --,invoice_no
               --,is_paper
               --,bill_no
               --,is_cash
               --,is_cod_receive
               --,currency_code
               --,currency_name
               --,goods_url
               ,settlement_weight
               --,customer_id
               ,order_source_code
               ,last_update_time
               --,last_update_network_id
               --,last_update_network_code
               --,last_update_network_name
               --,last_update_staff_code
               --,last_update_staff_name
               --,last_update_time_sync
               ,is_delete
               --,is_plaintext
               --,refund_time
               --,input_staff_by
               --,smart_device_data_update_time
               --,real_name
               --,id_no_type
               --,sex
               --,distribute_finance_id
               --,distribute_finance_code
               --,distribute_finance_name
               --,print_staff_name
               --,trace_id
               --,inspection_method
               ,package_collect_weight
               ,package_receipt_weight
               ,package_arrival_weight
               ,package_inside_charge_weight
               --,is_distribute_scan
               --,is_arrival_scan
               --,center_prints_number
               ,waybill_weight
               --,miss_flag
               ,is_business
               ,is_receive
               --,customer_network_id
               --,customer_network_code
               --,customer_network_name
               --,customer_type
               --,calculate_fee_desc
               --,calculate_fee_code
               --,printer_counterfoil
               --,quotetype_code
               --,receipt_fee
               --,package_center_arrival_weight
               ,express_type_code
               ,express_type_name
               ,package_total_weight
               ,dt
          FROM jms_dwd.dwd_yl_oms_oms_waybill_dt
            WHERE dt BETWEEN date_add('{{ execution_date | cst_ds }}', -22) AND date_add('{{ execution_date | cst_ds }}', -1)
),
way_result as (
          select *
    ,row_number() OVER (PARTITION BY waybill_no ORDER BY dt DESC) AS rk  --排序
    from (
       select * from way_history
       union all
       select * from way_today
             ) way_mid
)
INSERT OVERWRITE TABLE jms_dwd.dwd_yl_oms_oms_waybill_dt PARTITION (dt)
    select
                         id
                         ,waybill_no
                         ,waybill_status_code
                         ,goods_type_id
                         ,goods_type_code
                         ,goods_type_name
                         ,goods_name
                         --,package_number
                         ,package_length
                         ,package_wide
                         ,package_high
                         ,package_volume
                         ,package_total_volume
                         ,package_charge_weight
                         --,box_standard_id
                         --,box_standard_code
                         --,box_standard_name
                         --,box_number
                         --,box_price
                         ,collect_staff_code
                         --,collect_staff_name
                         ,collect_time
                         ,dispatch_staff_code
                         ,dispatch_staff_name
                         ,dispatch_time
                         --,dispatch_network_id
                         ,dispatch_network_code
                         ,dispatch_network_name
                         ,exception_code
                         --,exception_reason
                         ,terminal_dispatch_code
                         ,first_code
                         ,second_code
                         ,third_code
                         --,accurate
                         ,is_sign
                         --,sign_network_id
                         ,sign_network_code
                         ,sign_network_name
                         --,sign_finance_id
                         ,sign_finance_code
                         --,sign_finance_name
                         ,sign_time
                         --,is_real_name
                         --,id_no
                         ,is_abnormal
                         --,abnormal_reg_network_id
                         ,abnormal_reg_network_code
                         --,abnormal_reg_network_name
                         ,abnormal_reg_time
                         --,abnormal_reg_staff_code
                         --,abnormal_reg_staff_name
                         --,order_id
                         ,customer_order_id
                         ,waybill_source_code
                         ,waybill_source_name
                         --,send_code
                         --,send_name
                         --,dispatch_code
                         --,dispatch_name
                         ,is_void
                         ,is_refund
                         --,is_need_receipt
                         --,receipt_no
                         --,is_settlement
                         --,settlement_time
                         ,customer_code
                         ,customer_name
                         ,sender_name
                         --,sender_mobile_phone
                         --,sender_telphone
                         --,sender_country_id
                         --,sender_country_name
                         ,sender_province_id
                         --,sender_province_name
                         ,sender_city_id
                         --,sender_city_name
                         ,sender_area_id
                         --,sender_area_name
                         ,sender_township
                         ,sender_street
                         ,sender_detailed_address
                         --,sender_postal_code
                         --,sender_email
                         --,sign_sms_notify
                         --,sender_sms_notify
                         ,origin_id
                         --,origin_code
                         --,origin_name
                         --,pick_network_id
                         ,pick_network_code
                         ,pick_network_name
                         ,freight
                         --,package_cost
                         --,after_tax_freight
                         ,total_freight
                         --,tax
                         --,handicraft_fee
                         --,other_fee
                         --,receive_pay_fee
                         --,pick_finance_id
                         ,pick_finance_code
                         --,pick_finance_name
                         --,dispatch_finance_id
                         ,dispatch_finance_code
                         --,dispatch_finance_name
                         --,express_type_id
                         --,insured
                         --,insured_amount
                         --,insured_fee
                         --,cod_need
                         --,cod_money
                         --,cod_fee
                         --,settlement_id
                         --,settlement_code
                         --,settlement_name
                         --,paid_mode_id
                         --,paid_mode_code
                         --,paid_mode_name
                         ,receiver_name
                         --,receiver_company
                         --,receiver_mobile_phone
                         --,receiver_telphone
                         --,receiver_country_id
                         --,receiver_country_name
                         ,receiver_province_id
                         --,receiver_province_name
                         ,receiver_city_id
                         --,receiver_city_name
                         ,receiver_area_id
                         --,receiver_area_name
                         ,receiver_township
                         ,receiver_street
                         ,receiver_detailed_address
                         --,receiver_postal_code
                         --,receiver_email
                         ,destination_id
                         --,destination_code
                         --,destination_name
                         ,receiver_sorting_code
                         ,input_time
                         --,delivery_time
                         --,input_staff_code
                         --,input_staff_name
                         --,input_network_id
                         ,input_network_code
                         --,input_network_name
                         --,coupon_code
                         --,coupon_amount
                         --,remarks
                         --,prints_number
                         --,invoice_no
                         --,is_paper
                         --,bill_no
                         --,is_cash
                         --,is_cod_receive
                         --,currency_code
                         --,currency_name
                         --,goods_url
                         ,settlement_weight
                         --,customer_id
                         ,order_source_code
                         ,last_update_time
                         --,last_update_network_id
                         --,last_update_network_code
                         --,last_update_network_name
                         --,last_update_staff_code
                         --,last_update_staff_name
                         --,last_update_time_sync
                         ,is_delete
                         --,is_plaintext
                         --,refund_time
                         --,input_staff_by
                         --,smart_device_data_update_time
                         --,real_name
                         --,id_no_type
                         --,sex
                         --,distribute_finance_id
                         --,distribute_finance_code
                         --,distribute_finance_name
                         --,print_staff_name
                         --,trace_id
                         --,inspection_method
                         ,package_collect_weight
                         ,package_receipt_weight
                         ,package_arrival_weight
                         ,package_inside_charge_weight
                         --,is_distribute_scan
                         --,is_arrival_scan
                         --,center_prints_number
                         ,waybill_weight
                         --,miss_flag
                         ,is_business
                         ,is_receive
                         --,customer_network_id
                         --,customer_network_code
                         --,customer_network_name
                         --,customer_type
                         --,calculate_fee_desc
                         --,calculate_fee_code
                         --,printer_counterfoil
                         --,quotetype_code
                         --,receipt_fee
                         --,package_center_arrival_weight
                         ,express_type_code
                         ,express_type_name
                         ,package_total_weight
                         ,dt
         from way_result  where rk = 1
         distribute by dt,pmod(hash(rand()),56);
